package com.platform.core.service;

import com.querydsl.core.types.Predicate;
import com.platform.dto.LogQo;
import com.platform.core.entity.SysLog;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.util.MultiValueMap;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * Description: 日志-Service接口
 *
 * @author libin Created on 2019/7/19
 **/
public interface SysLogService extends BaseEntityBiz<SysLog> {
    /**
     * 创建
     *
     * @param logQo 角色对象
     */
    void create(LogQo logQo);

    /**
     * 分页查询
     *
     * @param predicate  查询条件
     * @param pageable   分页参数
     * @param parameters 查询参数
     * @return 列表
     */
    Page<LogQo> queryLogs(Predicate predicate, Pageable pageable, MultiValueMap<String, String> parameters);

    /**
     * 分页查询
     *
     * @param predicate  查询条件
     * @param pageable   分页参数
     * @param parameters 查询参数
     * @return 列表
     */
    Page<LogQo> queryGatherOptLogs(Predicate predicate, Pageable pageable, Map<String, String> parameters);

    /**
     * 查询机构集下用户登录系统的总次数和最近登入系统时间
     *
     * @param departIds 机构ids
     * @return list 用户登录系统的总次数和最近登入系统时间
     */
    List<Map<String, Object>> querySysLogInfos(List<String> departIds);

    /**
     * 查询用户最近登录时间
     * @return
     */
    LocalDateTime queryUserLastLoginTime();

    LogQo queryLogById(String id);
}
